# 第 3 章 列表
# 3.1 列表是什么
name=['herman','herbert']
print(name)
# 3.1.1 访问列表元素
name=['herman','herbert']
print(name[0])
print(name[0].title())
# 3.1.2 索引从0而不是1开始
name=['herman','herbert','zzp']
print(name[1])
# 问最后一个列表元素
print(name[-1])
print(name[-2])
# 3.1.3 使用列表中的各个值
name=['herman','herbert','zzp']
message="hello "+name[1].title()
print(message)

# 3.2 修改、添加和删除元素
# 3.2.1 修改列表元素
name=['herman','herbert','zzp']
print(name)
name[0]="xm"
print(name)

# 3.2.2 在列表中添加元素
# 1. 在列表末尾添加元素
name=['herman','herbert','zzp']
print(name)
name.append("xm")
print(name)
# 空列表
name=[]
name.append("herman")
name.append("xm")
print(name)
# 2. 在列表中插入元素
name=['herman','herbert','zzp']
name.insert(0,"xm")
print(name)

# 3.2.3 从列表中删除元素
# 1. 使用del 语句删除元素
name=['herman','herbert','zzp']
print(name)
del name[0]
print(name)
# 2. 使用方法pop() 删除末尾元素
name=['herman','herbert','zzp']
print(name)
lastname=name.pop()
print(name)
print(lastname)
# 3. 弹出列表中任何位置处的元素
name=['herman','herbert','zzp']
print(name)
lastname=name.pop(0)
print(lastname)
# 4. 根据值删除元素 remove删除第一个指定的值
name=['herman','herbert','zzp']
print(name)
name.remove("herbert")
print(name)

# 3.3 组织列表
# 3.3.1 使用方法sort() 对列表进行永久性排序
# 是按字母顺序排列
name=['herman','herbert','zzp','allen']
print(name)
name.sort()
print(name)
# 按与字母顺序相反的顺序排列
name=['herman','herbert','zzp','allen']
name.sort(reverse=True)
print(name)
# 3.3.2 使用函数sorted() 对列表进行临时排序
name=['herman','herbert','zzp','allen']
print(name)
print(sorted(name))
print(name)
# 3.3.3 倒着打印列表 永久性地修改
name=['herman','herbert','zzp','allen']
print(name)
name.reverse()
print(name)
# 3.3.4 确定列表的长度
name=['herman','herbert','zzp','allen']
print(len(name))

# 第 4 章 操作列表
name=['herman','herbert','zzp','allen']
for model in name:
    print(model)
# 4.1.1 深入地研究循环（for 语句末尾的冒号告诉Python，下一行是循环的第一行）
# 4.1.2 在for 循环中执行更多的操作,每个缩进的代码行都是循环的一部分
name=['herman','herbert','zzp','allen']
for model in name:
    print("hello "+model)
    print("good luck  " + model+"\n")
print("hello luck  ")
# 4.1.3 在for 循环结束后执行一些操作，如上
# 4.3 创建数值列表
# 4.3.1 使用函数range()
for model in range(1,6):
    print(model)
# 4.3.2 使用range() 创建数字列表
number=list(range(1,6))
print(number)
number=list(range(1,10,2))
print(number)

squares=[]
for value in range(1,11):
    square=value**2
    squares.append(square)
print(squares)

squares=[]
for value in range(1,11):
    squares.append(value**2)
print(squares)

# 4.3.3 对数字列表执行简单的统计计算
number=[1,3,5,7,9,11,13,15,17,19,21,66,88,100]
print(min(number))
print(max(number))
print(sum(number))
# 4.3.4 列表解析(请注意，这里的for 语句末尾没有冒号)
squares=[value**2 for value in range(1,10)]
print(squares)
# 4.4 使用列表的一部分
# 4.4.1 切片
name=['herman','herbert','zzp','allen']
print(name[0:2])
print(name[1:2])
# 由于没有指定起始索引，Python从列表开头开始提取
print(name[:2])
print(name[2:])
# 4.4.2 遍历切片
name=['herman','herbert','zzp','allen']
for model in name[:2]:
    print(model.title())
# 4.4.3 复制列表
name=['herman','herbert','zzp','allen']
new_name=name[:]
print(name)
print(new_name)
# 4.5 元组(而不可变的列表被称为元组)
dimensions=(200,50)
print(dimensions[0])
print(dimensions[1])
# dimensions[0]=250
# print(dimensions[0])
# 4.5.2 遍历元组中的所有值
dimensions=(200,50)
for model in dimensions:
    print(model)
# 4.5.3 修改元组变量
dimensions=(200,50)
for model in dimensions:
    print(model)
dimensions=(100,50)
for model in dimensions:
    print(model)